package servico;

import java.util.List;
import modelo.Visita;
import dao.VisitaDAO;
import dao.fabrica.FabricaDeDAOs;
import excecao.AplicacaoException;
import excecao.ObjetoDuplicadoException;
import excecao.ObjetoNaoEncontradoException;

public class VisitaAppService {

    private static VisitaDAO visitaDAO = FabricaDeDAOs.getDAO(VisitaDAO.class);

    public void inclui(Visita umaVisita) throws AplicacaoException {
        try {
            visitaDAO.inclui(umaVisita);

        } catch (ObjetoDuplicadoException e) {
            throw new AplicacaoException("Usuário já cadastrado");
        }

    }

    public void altera(Visita umaVisita)
            throws AplicacaoException {
        try {

            visitaDAO.altera(umaVisita);

        } catch (ObjetoNaoEncontradoException e) {

            throw new AplicacaoException("Usuario não encontrado");
        }
    }

    public void exclui(Visita umaVisita)
            throws AplicacaoException {
        try {

            visitaDAO.exclui(umaVisita);

        } catch (ObjetoNaoEncontradoException e) {

            throw new AplicacaoException("Usuario não encontrado");
        }
    }

    public Visita recuperaUmaVisita(Visita umaVisita)
            throws AplicacaoException {
        try {
            Visita visita = visitaDAO.recuperaUmaVisita(umaVisita);

            return visita;
        } catch (ObjetoNaoEncontradoException e) {

            throw new AplicacaoException("Usuario não encontrado");
        }
    }

    public List<Visita> recuperaVisitas() {
        List<Visita> Visitas = null;
        Visitas = visitaDAO.recuperaVisitas();
        return Visitas;
    }

    public void agendarVisita(Visita visita) throws ObjetoDuplicadoException {
        visita.setStatus("Aguardando_Aprovacao");
        visitaDAO.inclui(visita);
    }
}
